}
}
-
/* -------------------------------------------------------------------- */
/* %%% complete data strings transformation %%% */
/* -------------------------------------------------------------------- */
rte->rte_name = cet_convert_string(route->rte_name);
rte->rte_desc = cet_convert_string(route->rte_desc);
+ rte->rte_url = cet_convert_string(route->rte_url);
}
/* cet_convert_route_tlr: internal used within cet_convert_strings process */
fprintf(fout, "We have %d builtin character sets with %d aliases!\n", c, ac);
xfree(list);
}
+
+/* %%% cet_fprintf / cet_vfprintf %%%
+ *
+ * - print any special hard-coded characters from inside a module - */
+
+int cet_vfprintf(FILE *stream, const cet_cs_vec_t *src_vec, const char *fmt, va_list args)
+{
+ char buff[128];
+ char *cout = buff;
+ int res, ct;
+ va_list args2; /* vsnprintf makes args unusable for a second try */
+
+ va_copy(args2, args);
+ ct = vsnprintf(buff, sizeof(buff), fmt, args);
+ if (ct >= (int)sizeof(buff)) {
+ cout = xmalloc(ct + 1);
+ vsnprintf(cout, ct + 1, fmt, args2);
+ }
+ va_end(args2);
+
+ if (global_opts.charset != src_vec)
+ {
+ if (src_vec != &cet_cs_vec_utf8)
+ {
+ char *ctemp = cet_str_any_to_utf8(cout, src_vec);
+ if (cout != buff) xfree(cout);
+ cout = ctemp;
+ }
+ if (global_opts.charset != &cet_cs_vec_utf8)
+ {
+ char *ctemp = cet_str_utf8_to_any(cout, global_opts.charset);
+ if (cout != buff) xfree(cout);
+ cout = ctemp;
+ }
+ }
+
+ res = fprintf(stream, "%s", cout);
+ if (cout != buff) xfree(cout);
+
+ return res;
+}
+
+int cet_fprintf(FILE *stream, const cet_cs_vec_t *src_vec, const char *fmt, ...)
+{
+ int res;
+ va_list args;
+
+ va_start(args, fmt);
+ res = cet_vfprintf(stream, src_vec, fmt, args);
+ va_end(args);
+
+ return res;
+}
char *cet_str_any_to_any(const char *src, const cet_cs_vec_t *src_vec, const cet_cs_vec_t *dest_vec);
int cet_valid_char(const char *src, const cet_cs_vec_t *vec);
+int cet_vfprintf(FILE *stream, const cet_cs_vec_t *src_vec, const char *fmt, va_list args);
+int cet_fprintf(FILE *stream, const cet_cs_vec_t *src_vec, const char *fmt, ...);
+
/* gpsbabel extensions */
void cet_convert_init(const char *cs_name, const int force);